package com.csust.reflection.class_;

import com.csust.Car;
import com.csust.Cat;

public class getClass_ {
    public static void main(String[] args) throws Exception {
        //方式一：Class.forName()方法  已知全类名,通过读取配置文件 得到 类的全类名
        String classFullName = "com.csust.Car";
        Class<?> clazz1 = Class.forName(classFullName);
        System.out.println(clazz1);

        //方式二：[ClassName].class  应用类型：用于参数传递
        Class clazz2 = Car.class;
        System.out.println(clazz2);
        //方式三：实例[对象].getClass()  应用类型：有对象实例
        Car car = new Car();
        Class clazz3 = car.getClass();
        System.out.println(clazz3);
        //方式四：类加载器 不一定是当前类的类加载器 其他类的类加载 可以加载 一直全类名的类
        Cat cat = new Cat();
        ClassLoader classloader = cat.getClass().getClassLoader();
        Class clazz4 = classloader.loadClass(classFullName);
        System.out.println(clazz4);

        System.out.println(clazz1.hashCode());
        System.out.println(clazz2.hashCode());
        System.out.println(clazz3.hashCode());
        System.out.println(clazz4.hashCode());

    }
}
